import { post } from '@/utils/request'

/**
 * 分页参数接口
 */
export interface PageParams {
  page: number
  limit: number
  order?: 'ASC' | 'DESC'
  field?: string
}

/**
 * Pixverse视频任务提交参数接口
 */
export interface PixverseVideoSubmitRequest {
  platform?: number // 平台
  model?: string // 模型
  prompt: string // 提示词
  radio?: string // 尺寸
}

/**
 * Pixverse视频任务提交响应接口
 */
export interface PixverseVideoSubmitResponse {
  videoId: number // 视频任务ID
}

/**
 * 视频任务查询响应接口
 */
export interface VideoTaskItem {
  id: number // 视频任务id
  userId: number // 用户ID
  platformId: number // 模型ID
  taskId: string // 第三方返回的任务ID
  videoUrl: string // 视频地址
  poster: string // 封面地址
  prompt: string // 视频任务Prompt
  negativePrompt: string // 视频任务Negative Prompt
  templateId: string // 视频任务模板ID
  radio: string // 视频任务比例
  model: string // 模型
  status: number // 视频任务状态
  statusDesc: string // 视频任务状态描述
  createTime: number // 创建时间
  updateTime: number // 更新时间
}

/**
 * 分页查询响应接口
 */
export interface PageResult<T> {
  pageNo: number
  pageSize: number
  totalCount: number
  totalPage: number
  data: T[]
}

/**
 * 提交Pixverse视频任务
 * @param params 任务参数
 * @returns 视频ID
 */
export const submitPixverseVideoTask = (params: PixverseVideoSubmitRequest) => {
  return post<PixverseVideoSubmitResponse>('/ai-api/ai/video/pixverse/submit', params)
}

/**
 * 查询Pixverse视频任务结果
 * @param videoId 视频任务ID
 * @returns 视频任务结果
 */
export const queryPixverseVideoTask = (videoId: number) => {
  return post<VideoTaskItem>('/ai-api/ai/video/pixverse/query', { videoId })
}

/**
 * 分页查询用户视频任务
 * @param params 分页参数
 * @returns 分页数据
 */
export const getVideoTaskPage = (params: { page: PageParams }) => {
  return post<PageResult<VideoTaskItem>>('/ai-api/ai/video/page', params)
}
